From ec401bab1bb58cc64e29daf0e8c1bda0a07eabbc Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 31 Aug 2005 08:43:57 +0000 Subject: [PATCH] Add back missing part of XenLinux acpi/boot.c. This fixes bug #76 (IRQ sharing fails under load). Signed-off-by: Natasha Jarymowycz --- .../arch/xen/i386/kernel/acpi/boot.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c b/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c index bce4ef7ed4..19e71d8d2b 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c +++ b/linux-2.6-xen-sparse/arch/xen/i386/kernel/acpi/boot.c @@ -469,6 +469,18 @@ unsigned int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low) unsigned int irq; unsigned int plat_gsi = gsi; +#ifdef CONFIG_PCI + /* + * Make sure all (legacy) PCI IRQs are set as level-triggered. + */ + if (acpi_irq_model == ACPI_IRQ_MODEL_PIC) { + extern void eisa_set_level_irq(unsigned int irq); + + if (edge_level == ACPI_LEVEL_SENSITIVE) + eisa_set_level_irq(gsi); + } +#endif + #ifdef CONFIG_X86_IO_APIC if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) { plat_gsi = mp_register_gsi(gsi, edge_level, active_high_low); -- 2.30.2